package parser

//
//import (
//	"bufio"
//	"bytes"
//	"fmt"
//	"io"
//	"os"
//	"strings"
//	"text/template"
//	"save-kindle/log"
//)
//
//var chap chan EpubChapter
//var parserFinish chan int
//
//type EpubParser struct {
//	FileName    string
//	Path        string
//	MetaInfPath string
//	Oebps       string
//	DataMap     *OpfEntity
//}
//
//type EpubChapter struct {
//	// 章节文件存储路径
//	CurCount int
//	// 章节标题
//	Title []byte
//	// 章节内容
//	Content [][]byte
//}
//
//// NewEpubParser 构建解析器
//func NewEpubParser(fileName string) EpubParser {
//	path := fmt.Sprintf("./%s/", fileName)
//	chap = make(chan EpubChapter, 5)
//	parserFinish = make(chan int)
//
//	// 构建
//	return EpubParser{
//		FileName:    fileName,
//		Path:        path,
//		MetaInfPath: fmt.Sprintf("%s%s/", path, "META-INF"),
//		Oebps:       fmt.Sprintf("%s%s/", path, "OEBPS"),
//		DataMap: &OpfEntity{
//			Title:     fileName,
//			Creator:   []string{"Exler"},
//			Publisher: "Exler",
//		},
//	}
//}
//
//func (parser EpubParser) Parser() {
//	// 读取文件
//	file, err := os.OpenFile("./file/a.txt", os.O_RDONLY, 0600)
//	if err != nil {
//		log.PrintErr(err.Error())
//	}
//	defer file.Close()
//
//	reader := bufio.NewReader(file)
//	// 前一行为空的标记
//	emptyPreLineFlag := false
//	var content [][]byte
//	var buffer []byte
//	var title []byte
//	chapterCount := 0
//
//	for {
//		line, prefix, err := reader.ReadLine()
//		// log.Println(line, prefix, err)
//		if err != nil {
//			if err == io.EOF {
//				if len(line) != 0 {
//					content = append(content, line)
//				}
//
//				chap <- EpubChapter{
//					CurCount: chapterCount,
//					Title:    title,
//					Content:  content,
//				}
//
//				parserFinish <- chapterCount
//				break
//			}
//			log.PrintErr(err.Error())
//			break
//		}
//
//		// isPrefix = true
//		if prefix {
//			// 表示缓冲区满 还有下一行
//			buffer = append(buffer, line...)
//			continue
//		} else {
//			buffer = line
//		}
//
//		if emptyPreLineFlag {
//			// 判断是否是 标题
//			if strings.Index(string(buffer), "第") == 0 {
//				// log.Println(string(buffer))
//
//				if len(content) != 0 {
//					// 不是第一章
//					// 传输 上一章节的内容 让生成方处理
//					log.PrintErr(fmt.Sprintf("%p %p %p", chapterCount, title, content))
//					chap <- EpubChapter{
//						CurCount: chapterCount,
//						Title:    title,
//						Content:  content,
//					}
//					content = [][]byte{}
//				}
//
//				title = buffer
//				chapterCount++
//				emptyPreLineFlag = false
//				continue
//			}
//		}
//
//		if len(buffer) == 0 {
//			// 标题 章节前面需要是一个空行
//			emptyPreLineFlag = true
//		} else {
//			content = append(content, buffer)
//		}
//	}
//}
//
//// ------------------------- 生成 -----------------------
//
//func (parser EpubParser) Gen() {
//	finish := 0
//	for {
//		select {
//		case c := <-chap:
//			log.Println(string(c.Title))
//			log.PrintErr(fmt.Sprintf("%p %p %p", c.CurCount, c.Title, c.Content))
//			//log.Println(c.CurCount)
//			//log.Println(c.Title)
//			//for _, v := range c.Content {
//			//	log.Println(v)
//			//	log.Println(string(v))
//			//}
//			//log.Println()
//			finish++
//		case f := <-parserFinish:
//			finish -= f
//		}
//
//		if finish == 0 {
//			break
//		}
//	}
//	log.Println(finish)
//}
//
//func (parser EpubParser) Gen2() {
//	// META-INF
//	parser.genMeta()
//
//	// mimetype
//	file, err := os.OpenFile("./"+parser.FileName+"/mimetype", os.O_CREATE|os.O_RDWR, 0666)
//	if err != nil {
//		fmt.Println(err.Error())
//	}
//	defer file.Close()
//	file.Write([]byte("application/epub+zip"))
//
//	// oebps
//	parser.genOebps()
//}
//
//func (parser EpubParser) genMeta() {
//	os.MkdirAll(parser.MetaInfPath, 0777)
//	// META-INF
//	templateFile, err := os.OpenFile("./template/container.xml", os.O_RDONLY, 0666)
//	if err != nil {
//		fmt.Println(err.Error())
//	}
//	defer templateFile.Close()
//
//	targetFile, err := os.OpenFile(fmt.Sprintf("%s%s", parser.MetaInfPath, "container.xml"), os.O_CREATE|os.O_WRONLY, 0666)
//	if err != nil {
//		fmt.Println(err.Error())
//	}
//	io.Copy(targetFile, templateFile)
//}
//
//func (parser EpubParser) genOebps() {
//	os.MkdirAll(parser.Oebps, 0777)
//
//	//for {
//	//	select {}
//	//}
//
//	parser.genOps()
//
//}
//
//// genOps 利用模板生成content.opf文件
//func (parser EpubParser) genOps() {
//
//	files, err := template.ParseFiles("./template/content.opf")
//	if err != nil {
//		log.PrintErr(err.Error())
//	}
//
//	buffer := &bytes.Buffer{}
//	err = files.Execute(buffer, parser.DataMap)
//
//	file, err := os.OpenFile(parser.Oebps+"/content.opf", os.O_CREATE|os.O_WRONLY, 0777)
//	if err != nil {
//		log.PrintErr(err.Error())
//	}
//	defer file.Close()
//
//	buffer.WriteTo(file)
//}
//
//type OpfEntity struct {
//	Title     string
//	Creator   []string
//	Publisher string
//	Manifest  []OpfManifest
//	Ncx       []OpfNcx
//}
//
//type OpfManifest struct {
//	Id string
//	// application/xhtml+xml
//	// text/css
//	// image/jpeg
//	// application/x-dtbncx+xml
//	MediaType string
//	// 指从 OEBPS 开始的路径
//	// Text
//	// Styles
//	// Images
//	Href string
//}
//
//type OpfNcx struct {
//	Idref string
//}
//
